<?php namespace Common\Model; 

use Hdphp\Model\Model;
use Common\Model\Category;
use Common\Model\Goods;
use Common\Model\GoodsAttr;
use Common\Model\GoodsDetail;
//商品模型
class Goods extends Model{
	// 指定表名
	protected $table='goods';
	// 自动验证
	protected $validate=array(
		// 名称
		array('gname','required','商品名称不能为空',3,3),
		// 货号
		array('gnumber','required','商品货号不能为空',3,3),
		// 单位
		array('unit','required','商品单位不能为空',3,3),
		// 市场价
		array('marketprice','required','市场价格不能为空',3,3),
		// 商城价
		array('shopprice','required','商城价格不能为空',3,3),
		
		);

	// 自动完成
	protected $auto=array(
		array('addtime','time','function',3,1),
		array('updatetime','time','function',3,2),
        // 
		array('admin_aid','getAid','method',3,1),//返回session里面存的aid
		array('type_tid','getTid','method',3,3),//获取tid
		);

	// 通过分类表获取type_tid
    public function getTid(){
    	// 获取post提交的category_cid
    	$cid=Q('category_cid');
    	// 实例化分类表
        $cateModel=new Category;
        // 查找分类表里面的cid对应的哪个数据的【类型type_tid
        $type_tid=$cateModel->where("cid=$cid")->pluck('type_tid');
        // 并且返回
        return $type_tid;
    }


	// 获取session里面的aid
	public function getAid(){
		// 返回
		return $_SESSION['aid'];
	}

	

	// 添加商品
	public function store(){
		// sp($_POST);die;
		// 1.添加商品表
		// 触发自动验证和自动完成
		if(!$this->create()) return false;//验证失败就返回false
		// 验证通过就将数据插入商品数据表【并且返回文章的自增id
		$gid=$this->add();

// 2.添加商品属性表
// 【商品属性】
		//实例化商品属性表
		$goodsAttrModel=new GoodsAttr;
		// 接收提交过来的商品属性
		$goodsAttrData=Q('post.attr',array());
		// sp($goodsAttrData);die;
		// 循环获取的商品属性
		foreach ($goodsAttrData as $k => $v) {
			// 是否有属性值
			// 如果有
			if($v){
				$data=array(
					'gtvalue'=>$v,		 //商品属性值
					'type_attr_taid'=>$k,//商品所属类型属性ID
					'goods_gid'=>$gid,	 //所属商品ID
					);
				// sp($data);
				// 将组合好的商品属性压入数据库
				$goodsAttrModel->add($data);
			}
			
		}
// 【商品规格】
		// 接收提交过来的商品规格
		$goodsSpecData=Q('post.spec',array());
		// sp($goodsSpecData);
		// // 循环获取的商品规格【商品规格】【附加价格】
		foreach ($goodsSpecData as $key => $value) {
			// sp($value);
				// 循环商品规格【将循环得到的规格值压入数组】
				foreach ($value['value'] as $k => $v) {
					// sp($k);
					$arr[$k]['gtvalue']=$v;         //商品规格值
					$arr[$k]['type_attr_taid']=$key;//所属类型属性ID
					$arr[$k]['goods_gid']=$gid;     //所属商品ID

				}
				// sp($arr);
				// 循环商品附加价格【将循环得到的附加价格压入数组】
				foreach ($value['price'] as $kk => $vv) {
					$arr[$kk]['added']=$vv;
					
				}
                // sp($arr);die;
                // 将组合好的数组循环插入商品属性表
                foreach ($arr as $kkk => $vvv) {
                	// sp($vvv);
                	// die;
                	 $goodsAttrModel->add($vvv);
                }
		
		}

// 3.添加商品详细表
	// 实例化商品详细模型
		$goodsDetailModel=new GoodsDetail;
		// sp(Q('post.photo'));
		$photo=Q('post.photo');
		// sp($photo);
		// 将数组转为字符串
		$photo=implode(',',$photo);
		$data=array(
			'photo'=>$photo,
			'intro'=>Q('post.intro'),
			'service'=>Q('post.service'),
			'goods_gid'=>$gid,
			);
		// sp($data);
		$goodsDetailModel->add($data);
		return true;
	}



	// 删除
	public function del(){
		// 获取商品的gid
		$gid=Q('get.gid',0,'intval');
		//1. 删除商品表
		// 删除商品gid对应的商品
		// 实例化商品
		$goodsModel=new Goods;
		$goodsModel->where("gid={$gid}")->delete();
		// 2.删除商品属性表
		// 实例化商品属性模型
		$goodsAttrModel=new GoodsAttr;
		$goodsAttrModel->where("goods_gid={$gid}")->delete();
		//3. 删除商品详情表
		// 实例化商品详细模型
		$goodsDetailModel=new GoodsDetail;
		$goodsDetailModel->where("goods_gid={$gid}")->delete();
	}


	// 编辑
	public function edit(){
		// 接收隐藏域提交过来的商品ID
		$gid=Q('post.gid');
		// 实例化商品模型
		$goodsModel=new Goods;
//1. 修改商品表// 触发自动验证和自动完成
		if(!$goodsModel->create()) return false; //验证失败返回false
		// 验证通过那就将数据插入数据表
		$goodsModel->save();
// 2.修改商品属性表
		// 实例化商品属性模型
		$goodsAttrModel=new GoodsAttr;

		// 先删除旧数据
		$goodsAttrModel->where("goods_gid=$gid")->delete();
		// sp(Q('post.'));
		$goodsAttrData=Q('post.attr',array());
		// sp($goodsAttrData);die;
		// 循环获取的商品属性
		// 然后把修改好的新数据压入
		foreach ($goodsAttrData as $k => $v) {
			// 是否有属性值
			// 如果有
			if($v){
				$data=array(

					'gtvalue'=>$v,		 //商品属性值
					'type_attr_taid'=>$k,//商品所属类型属性ID
					'goods_gid'=>$gid,	 //所属商品ID
					);
				// sp($data);die;
				// 将组合好的商品属性压入商品属性表
				$goodsAttrModel->where("goods_gid=$gid")->add($data);
			}
			
		}

// 修改【商品规格】
		// 接收提交过来的商品规格
		$goodsSpecData=Q('post.spec',array());

		// sp($goodsSpecData);
		// // 循环获取的商品规格【商品规格】【附加价格】
		foreach ($goodsSpecData as $key => $value) {
			// sp($value);
				// 循环商品规格【将循环得到的规格值压入数组】
				foreach ($value['value'] as $k => $v) {
					// sp($k);
					$arr[$k]['gtvalue']=$v;         //商品规格值
					$arr[$k]['type_attr_taid']=$key;//所属类型属性ID
					$arr[$k]['goods_gid']=$gid;     //所属商品ID

				}
				// sp($arr);
				// 循环商品附加价格【将循环得到的附加价格压入数组】
				foreach ($value['price'] as $kk => $vv) {
					$arr[$kk]['added']=$vv;
					
				}
                // sp($arr);die;
                // 将组合好的数组循环插入商品属性表
                foreach ($arr as $kkk => $vvv) {
                	// sp($vvv);
                	// die;
                	 $goodsAttrModel->where("goods_gid=$gid")->add($vvv);
                }
		
		}

//3. 修改商品详情表

	// 实例化商品详细模型
		$goodsDetailModel=new GoodsDetail;
		// sp(Q('post.photo'));
		$photo=Q('post.photo');
		// sp($photo);
		// 将数组转为字符串
		$photo=implode(',',$photo);
		$data=array(
			'photo'=>$photo,
			'intro'=>Q('post.intro'),
			'service'=>Q('post.service'),
			'goods_gid'=>$gid,
			);
		// sp($data);die;
		$goodsDetailModel->where("goods_gid=$gid")->save($data);
		return true;

	}
}
